/*
 * CLASSE que irá implementar a interface PESSOADAO
 */

package br.com.jkar.dao;

import br.com.jkar.bean.Pessoa;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.List;

/**
 *
 * @author Kamila Berto <kah.berto@gmail.com>
 */
public class PessoaDAOImpl implements PessoaDAO{
    
    Connection conn = null;
    PreparedStatement psmt = null;   
    ResultSet rs;
    
    @Override
    public Pessoa salvar(Pessoa pessoa) throws Exception {
        EnderecoDAO enderecoDAO = new EnderecoDAOImpl();
        try {
            enderecoDAO.salvar(pessoa.getEndereco());
            conn = FabricarConexao.abrirConexao();
            String sql = "INSERT INTO pessoa (nome, cpf, rg, email, telfixo, celular, endereco_id) VALUES (?, ?, ?, ?, ?, ?, ?)";
            psmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
            psmt.setString(1, pessoa.getNome());
            psmt.setString(2, pessoa.getCpf());
            psmt.setString(3, pessoa.getRg());
            psmt.setString(4, pessoa.getEmail());
            psmt.setString(5, pessoa.getTelFixo());
            psmt.setString(6, pessoa.getCelular());
            psmt.setInt(7, pessoa.getEndereco().getId());
            psmt.executeUpdate();
            rs = psmt.getGeneratedKeys();
            rs.next();
            pessoa.setId(rs.getInt(1));
        } catch (Exception e) {
            System.out.println("Erro ao gravar dados no BD: " + e.getMessage());
        }finally{
            FabricarConexao.fecharConexao(conn, psmt, rs);
        }
        return pessoa;
    }

    @Override
    public Pessoa alterar(Pessoa pessoa) throws Exception {
        EnderecoDAO enderecoDAO = new EnderecoDAOImpl();
        enderecoDAO.alterar(pessoa.getEndereco());
        try {
            conn = FabricarConexao.abrirConexao();
            String sql = "UPDATE pessoa SET nome = ?, cpf = ?, rg = ?, email = ?, "
                    + "telfixo = ?, celular = ? WHERE id  = ?";
            psmt = conn.prepareStatement(sql);
            psmt.setString(1, pessoa.getNome());
            psmt.setString(2, pessoa.getCpf());
            psmt.setString(3, pessoa.getRg());
            psmt.setString(4, pessoa.getEmail());
            psmt.setString(5, pessoa.getTelFixo());
            psmt.setString(6, pessoa.getCelular());
            psmt.setInt(7, pessoa.getId());
            psmt.executeUpdate();
        } catch (Exception e) {
            System.out.println("Erro ao alterar dados no BD: " + e.getMessage());
        }finally{
            FabricarConexao.fecharConexao(conn, psmt);
        }
        return pessoa;
    }

    @Override
    public void excluir(Integer id) throws Exception {
    }

    @Override
    public List<Pessoa> listar() throws Exception {
        return null;
    }

    @Override
    public Pessoa procurar(Integer id) throws Exception {
        return null;
    }
    
}
